{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# Keras InceptionV1 classifier for CIFAR10 test\n",
    "GoogleInceptionV1 network for CIFAR10 network test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The autoreload extension is already loaded. To reload it, use:\n",
      "  %reload_ext autoreload\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import keras\n",
    "from keras.models import Sequential\n",
    "from keras.layers import Dense, Activation\n",
    "from data_utils import *\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "import tensorflow as tf \n",
    "from keras import backend as k\n",
    "import os\n",
    "config = tf.ConfigProto()\n",
    "# config.gpu_options.per_process_gpu_memory_fraction = 0.1\n",
    "config.gpu_options.allow_growth = True\n",
    "k.tensorflow_backend.set_session(tf.Session(config=config))\n",
    "\n",
    "%load_ext autoreload\n",
    "%autoreload 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CIFAR10 Training data shape: (50000, 32, 32, 3)\n",
      "CIFAR10 Training label shape (50000, 1)\n",
      "CIFAR10 Test data shape (10000, 32, 32, 3)\n",
      "CIFAR10 Test label shape (10000, 1)\n",
      "(40000, 32, 32, 3)\n"
     ]
    }
   ],
   "source": [
    "# get data\n",
    "cifar10_data = CIFAR10Data()\n",
    "x_train, y_train, x_test, y_test = cifar10_data.get_data(subtract_mean=True)\n",
    "\n",
    "num_train = int(x_train.shape[0] * 0.8)\n",
    "num_val = x_train.shape[0] - num_train\n",
    "mask = list(range(num_train, num_train+num_val))\n",
    "x_val = x_train[mask]\n",
    "y_val = y_train[mask]\n",
    "\n",
    "mask = list(range(num_train))\n",
    "x_train = x_train[mask]\n",
    "y_train = y_train[mask]\n",
    "print(x_train.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "input_7 (InputLayer)            (None, 32, 32, 3)    0                                            \n",
      "__________________________________________________________________________________________________\n",
      "2a-conv (Conv2D)                (None, 32, 32, 64)   192         input_7[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "2a-bn (BatchNormalization)      (None, 32, 32, 64)   192         2a-conv[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "2a-relu (Activation)            (None, 32, 32, 64)   0           2a-bn[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "2b-conv (Conv2D)                (None, 32, 32, 192)  110592      2a-relu[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "2b-bn (BatchNormalization)      (None, 32, 32, 192)  576         2b-conv[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "2b-relu (Activation)            (None, 32, 32, 192)  0           2b-bn[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-1x1-conv (Conv2 (None, 32, 32, 96)   18432       2b-relu[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-1x1-conv (Conv2 (None, 32, 32, 16)   3072        2b-relu[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-1x1-bn (BatchNo (None, 32, 32, 96)   288         inception3a-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-1x1-bn (BatchNo (None, 32, 32, 16)   48          inception3a-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-1x1-relu (Activ (None, 32, 32, 96)   0           inception3a-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-1x1-relu (Activ (None, 32, 32, 16)   0           inception3a-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br3-pool (MaxPoolin (None, 32, 32, 192)  0           2b-relu[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br0-1x1-conv (Conv2 (None, 32, 32, 64)   12288       2b-relu[0][0]                    \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-3x3-conv (Conv2 (None, 32, 32, 128)  110592      inception3a-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-5x5-conv (Conv2 (None, 32, 32, 32)   12800       inception3a-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br3-1x1-conv (Conv2 (None, 32, 32, 32)   6144        inception3a-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br0-1x1-bn (BatchNo (None, 32, 32, 64)   192         inception3a-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-3x3-bn (BatchNo (None, 32, 32, 128)  384         inception3a-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-5x5-bn (BatchNo (None, 32, 32, 32)   96          inception3a-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br3-1x1-bn (BatchNo (None, 32, 32, 32)   96          inception3a-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br0-1x1-relu (Activ (None, 32, 32, 64)   0           inception3a-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br1-3x3-relu (Activ (None, 32, 32, 128)  0           inception3a-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br2-5x5-relu (Activ (None, 32, 32, 32)   0           inception3a-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a-br3-1x1-relu (Activ (None, 32, 32, 32)   0           inception3a-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3a (Concatenate)       (None, 32, 32, 256)  0           inception3a-br0-1x1-relu[0][0]   \n",
      "                                                                 inception3a-br1-3x3-relu[0][0]   \n",
      "                                                                 inception3a-br2-5x5-relu[0][0]   \n",
      "                                                                 inception3a-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-1x1-conv (Conv2 (None, 32, 32, 128)  32768       inception3a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-1x1-conv (Conv2 (None, 32, 32, 32)   8192        inception3a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-1x1-bn (BatchNo (None, 32, 32, 128)  384         inception3b-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-1x1-bn (BatchNo (None, 32, 32, 32)   96          inception3b-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-1x1-relu (Activ (None, 32, 32, 128)  0           inception3b-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-1x1-relu (Activ (None, 32, 32, 32)   0           inception3b-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br3-pool (MaxPoolin (None, 32, 32, 256)  0           inception3a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br0-1x1-conv (Conv2 (None, 32, 32, 128)  32768       inception3a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-3x3-conv (Conv2 (None, 32, 32, 192)  221184      inception3b-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-5x5-conv (Conv2 (None, 32, 32, 96)   76800       inception3b-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br3-1x1-conv (Conv2 (None, 32, 32, 64)   16384       inception3b-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br0-1x1-bn (BatchNo (None, 32, 32, 128)  384         inception3b-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-3x3-bn (BatchNo (None, 32, 32, 192)  576         inception3b-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-5x5-bn (BatchNo (None, 32, 32, 96)   288         inception3b-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br3-1x1-bn (BatchNo (None, 32, 32, 64)   192         inception3b-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br0-1x1-relu (Activ (None, 32, 32, 128)  0           inception3b-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br1-3x3-relu (Activ (None, 32, 32, 192)  0           inception3b-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br2-5x5-relu (Activ (None, 32, 32, 96)   0           inception3b-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b-br3-1x1-relu (Activ (None, 32, 32, 64)   0           inception3b-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception3b (Concatenate)       (None, 32, 32, 480)  0           inception3b-br0-1x1-relu[0][0]   \n",
      "                                                                 inception3b-br1-3x3-relu[0][0]   \n",
      "                                                                 inception3b-br2-5x5-relu[0][0]   \n",
      "                                                                 inception3b-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "3pool (MaxPooling2D)            (None, 16, 16, 480)  0           inception3b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-1x1-conv (Conv2 (None, 16, 16, 96)   46080       3pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-1x1-conv (Conv2 (None, 16, 16, 16)   7680        3pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-1x1-bn (BatchNo (None, 16, 16, 96)   288         inception4a-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-1x1-bn (BatchNo (None, 16, 16, 16)   48          inception4a-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-1x1-relu (Activ (None, 16, 16, 96)   0           inception4a-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-1x1-relu (Activ (None, 16, 16, 16)   0           inception4a-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br3-pool (MaxPoolin (None, 16, 16, 480)  0           3pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br0-1x1-conv (Conv2 (None, 16, 16, 192)  92160       3pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-3x3-conv (Conv2 (None, 16, 16, 208)  179712      inception4a-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-5x5-conv (Conv2 (None, 16, 16, 48)   19200       inception4a-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br3-1x1-conv (Conv2 (None, 16, 16, 64)   30720       inception4a-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br0-1x1-bn (BatchNo (None, 16, 16, 192)  576         inception4a-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-3x3-bn (BatchNo (None, 16, 16, 208)  624         inception4a-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-5x5-bn (BatchNo (None, 16, 16, 48)   144         inception4a-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br3-1x1-bn (BatchNo (None, 16, 16, 64)   192         inception4a-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br0-1x1-relu (Activ (None, 16, 16, 192)  0           inception4a-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br1-3x3-relu (Activ (None, 16, 16, 208)  0           inception4a-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br2-5x5-relu (Activ (None, 16, 16, 48)   0           inception4a-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a-br3-1x1-relu (Activ (None, 16, 16, 64)   0           inception4a-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4a (Concatenate)       (None, 16, 16, 512)  0           inception4a-br0-1x1-relu[0][0]   \n",
      "                                                                 inception4a-br1-3x3-relu[0][0]   \n",
      "                                                                 inception4a-br2-5x5-relu[0][0]   \n",
      "                                                                 inception4a-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-1x1-conv (Conv2 (None, 16, 16, 112)  57344       inception4a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-1x1-conv (Conv2 (None, 16, 16, 24)   12288       inception4a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-1x1-bn (BatchNo (None, 16, 16, 112)  336         inception4b-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-1x1-bn (BatchNo (None, 16, 16, 24)   72          inception4b-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-1x1-relu (Activ (None, 16, 16, 112)  0           inception4b-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-1x1-relu (Activ (None, 16, 16, 24)   0           inception4b-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br3-pool (MaxPoolin (None, 16, 16, 512)  0           inception4a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br0-1x1-conv (Conv2 (None, 16, 16, 160)  81920       inception4a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-3x3-conv (Conv2 (None, 16, 16, 224)  225792      inception4b-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-5x5-conv (Conv2 (None, 16, 16, 64)   38400       inception4b-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br3-1x1-conv (Conv2 (None, 16, 16, 64)   32768       inception4b-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br0-1x1-bn (BatchNo (None, 16, 16, 160)  480         inception4b-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-3x3-bn (BatchNo (None, 16, 16, 224)  672         inception4b-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-5x5-bn (BatchNo (None, 16, 16, 64)   192         inception4b-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br3-1x1-bn (BatchNo (None, 16, 16, 64)   192         inception4b-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br0-1x1-relu (Activ (None, 16, 16, 160)  0           inception4b-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br1-3x3-relu (Activ (None, 16, 16, 224)  0           inception4b-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br2-5x5-relu (Activ (None, 16, 16, 64)   0           inception4b-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b-br3-1x1-relu (Activ (None, 16, 16, 64)   0           inception4b-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4b (Concatenate)       (None, 16, 16, 512)  0           inception4b-br0-1x1-relu[0][0]   \n",
      "                                                                 inception4b-br1-3x3-relu[0][0]   \n",
      "                                                                 inception4b-br2-5x5-relu[0][0]   \n",
      "                                                                 inception4b-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-1x1-conv (Conv2 (None, 16, 16, 128)  65536       inception4b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-1x1-conv (Conv2 (None, 16, 16, 24)   12288       inception4b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-1x1-bn (BatchNo (None, 16, 16, 128)  384         inception4c-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-1x1-bn (BatchNo (None, 16, 16, 24)   72          inception4c-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-1x1-relu (Activ (None, 16, 16, 128)  0           inception4c-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-1x1-relu (Activ (None, 16, 16, 24)   0           inception4c-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br3-pool (MaxPoolin (None, 16, 16, 512)  0           inception4b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br0-1x1-conv (Conv2 (None, 16, 16, 128)  65536       inception4b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-3x3-conv (Conv2 (None, 16, 16, 256)  294912      inception4c-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-5x5-conv (Conv2 (None, 16, 16, 64)   38400       inception4c-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br3-1x1-conv (Conv2 (None, 16, 16, 64)   32768       inception4c-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br0-1x1-bn (BatchNo (None, 16, 16, 128)  384         inception4c-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-3x3-bn (BatchNo (None, 16, 16, 256)  768         inception4c-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-5x5-bn (BatchNo (None, 16, 16, 64)   192         inception4c-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br3-1x1-bn (BatchNo (None, 16, 16, 64)   192         inception4c-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br0-1x1-relu (Activ (None, 16, 16, 128)  0           inception4c-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br1-3x3-relu (Activ (None, 16, 16, 256)  0           inception4c-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br2-5x5-relu (Activ (None, 16, 16, 64)   0           inception4c-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c-br3-1x1-relu (Activ (None, 16, 16, 64)   0           inception4c-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4c (Concatenate)       (None, 16, 16, 512)  0           inception4c-br0-1x1-relu[0][0]   \n",
      "                                                                 inception4c-br1-3x3-relu[0][0]   \n",
      "                                                                 inception4c-br2-5x5-relu[0][0]   \n",
      "                                                                 inception4c-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-1x1-conv (Conv2 (None, 16, 16, 144)  73728       inception4c[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-1x1-conv (Conv2 (None, 16, 16, 32)   16384       inception4c[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-1x1-bn (BatchNo (None, 16, 16, 144)  432         inception4d-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-1x1-bn (BatchNo (None, 16, 16, 32)   96          inception4d-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-1x1-relu (Activ (None, 16, 16, 144)  0           inception4d-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-1x1-relu (Activ (None, 16, 16, 32)   0           inception4d-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br3-pool (MaxPoolin (None, 16, 16, 512)  0           inception4c[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br0-1x1-conv (Conv2 (None, 16, 16, 112)  57344       inception4c[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-3x3-conv (Conv2 (None, 16, 16, 288)  373248      inception4d-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-5x5-conv (Conv2 (None, 16, 16, 64)   51200       inception4d-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br3-1x1-conv (Conv2 (None, 16, 16, 64)   32768       inception4d-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br0-1x1-bn (BatchNo (None, 16, 16, 112)  336         inception4d-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-3x3-bn (BatchNo (None, 16, 16, 288)  864         inception4d-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-5x5-bn (BatchNo (None, 16, 16, 64)   192         inception4d-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br3-1x1-bn (BatchNo (None, 16, 16, 64)   192         inception4d-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br0-1x1-relu (Activ (None, 16, 16, 112)  0           inception4d-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br1-3x3-relu (Activ (None, 16, 16, 288)  0           inception4d-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br2-5x5-relu (Activ (None, 16, 16, 64)   0           inception4d-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d-br3-1x1-relu (Activ (None, 16, 16, 64)   0           inception4d-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4d (Concatenate)       (None, 16, 16, 528)  0           inception4d-br0-1x1-relu[0][0]   \n",
      "                                                                 inception4d-br1-3x3-relu[0][0]   \n",
      "                                                                 inception4d-br2-5x5-relu[0][0]   \n",
      "                                                                 inception4d-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-1x1-conv (Conv2 (None, 16, 16, 160)  84480       inception4d[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-1x1-conv (Conv2 (None, 16, 16, 32)   16896       inception4d[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-1x1-bn (BatchNo (None, 16, 16, 160)  480         inception4e-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-1x1-bn (BatchNo (None, 16, 16, 32)   96          inception4e-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-1x1-relu (Activ (None, 16, 16, 160)  0           inception4e-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-1x1-relu (Activ (None, 16, 16, 32)   0           inception4e-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br3-pool (MaxPoolin (None, 16, 16, 528)  0           inception4d[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br0-1x1-conv (Conv2 (None, 16, 16, 256)  135168      inception4d[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-3x3-conv (Conv2 (None, 16, 16, 320)  460800      inception4e-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-5x5-conv (Conv2 (None, 16, 16, 128)  102400      inception4e-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br3-1x1-conv (Conv2 (None, 16, 16, 128)  67584       inception4e-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br0-1x1-bn (BatchNo (None, 16, 16, 256)  768         inception4e-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-3x3-bn (BatchNo (None, 16, 16, 320)  960         inception4e-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-5x5-bn (BatchNo (None, 16, 16, 128)  384         inception4e-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br3-1x1-bn (BatchNo (None, 16, 16, 128)  384         inception4e-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br0-1x1-relu (Activ (None, 16, 16, 256)  0           inception4e-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br1-3x3-relu (Activ (None, 16, 16, 320)  0           inception4e-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br2-5x5-relu (Activ (None, 16, 16, 128)  0           inception4e-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e-br3-1x1-relu (Activ (None, 16, 16, 128)  0           inception4e-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception4e (Concatenate)       (None, 16, 16, 832)  0           inception4e-br0-1x1-relu[0][0]   \n",
      "                                                                 inception4e-br1-3x3-relu[0][0]   \n",
      "                                                                 inception4e-br2-5x5-relu[0][0]   \n",
      "                                                                 inception4e-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "4pool (MaxPooling2D)            (None, 8, 8, 832)    0           inception4e[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-1x1-conv (Conv2 (None, 8, 8, 160)    133120      4pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-1x1-conv (Conv2 (None, 8, 8, 32)     26624       4pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-1x1-bn (BatchNo (None, 8, 8, 160)    480         inception5a-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-1x1-bn (BatchNo (None, 8, 8, 32)     96          inception5a-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-1x1-relu (Activ (None, 8, 8, 160)    0           inception5a-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-1x1-relu (Activ (None, 8, 8, 32)     0           inception5a-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br3-pool (MaxPoolin (None, 8, 8, 832)    0           4pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br0-1x1-conv (Conv2 (None, 8, 8, 256)    212992      4pool[0][0]                      \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-3x3-conv (Conv2 (None, 8, 8, 320)    460800      inception5a-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-5x5-conv (Conv2 (None, 8, 8, 128)    102400      inception5a-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br3-1x1-conv (Conv2 (None, 8, 8, 128)    106496      inception5a-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br0-1x1-bn (BatchNo (None, 8, 8, 256)    768         inception5a-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-3x3-bn (BatchNo (None, 8, 8, 320)    960         inception5a-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-5x5-bn (BatchNo (None, 8, 8, 128)    384         inception5a-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br3-1x1-bn (BatchNo (None, 8, 8, 128)    384         inception5a-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br0-1x1-relu (Activ (None, 8, 8, 256)    0           inception5a-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br1-3x3-relu (Activ (None, 8, 8, 320)    0           inception5a-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br2-5x5-relu (Activ (None, 8, 8, 128)    0           inception5a-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a-br3-1x1-relu (Activ (None, 8, 8, 128)    0           inception5a-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5a (Concatenate)       (None, 8, 8, 832)    0           inception5a-br0-1x1-relu[0][0]   \n",
      "                                                                 inception5a-br1-3x3-relu[0][0]   \n",
      "                                                                 inception5a-br2-5x5-relu[0][0]   \n",
      "                                                                 inception5a-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-1x1-conv (Conv2 (None, 8, 8, 192)    159744      inception5a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-1x1-conv (Conv2 (None, 8, 8, 48)     39936       inception5a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-1x1-bn (BatchNo (None, 8, 8, 192)    576         inception5b-br1-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-1x1-bn (BatchNo (None, 8, 8, 48)     144         inception5b-br2-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-1x1-relu (Activ (None, 8, 8, 192)    0           inception5b-br1-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-1x1-relu (Activ (None, 8, 8, 48)     0           inception5b-br2-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br3-pool (MaxPoolin (None, 8, 8, 832)    0           inception5a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br0-1x1-conv (Conv2 (None, 8, 8, 384)    319488      inception5a[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-3x3-conv (Conv2 (None, 8, 8, 384)    663552      inception5b-br1-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-5x5-conv (Conv2 (None, 8, 8, 128)    153600      inception5b-br2-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br3-1x1-conv (Conv2 (None, 8, 8, 128)    106496      inception5b-br3-pool[0][0]       \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br0-1x1-bn (BatchNo (None, 8, 8, 384)    1152        inception5b-br0-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-3x3-bn (BatchNo (None, 8, 8, 384)    1152        inception5b-br1-3x3-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-5x5-bn (BatchNo (None, 8, 8, 128)    384         inception5b-br2-5x5-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br3-1x1-bn (BatchNo (None, 8, 8, 128)    384         inception5b-br3-1x1-conv[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br0-1x1-relu (Activ (None, 8, 8, 384)    0           inception5b-br0-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br1-3x3-relu (Activ (None, 8, 8, 384)    0           inception5b-br1-3x3-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br2-5x5-relu (Activ (None, 8, 8, 128)    0           inception5b-br2-5x5-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b-br3-1x1-relu (Activ (None, 8, 8, 128)    0           inception5b-br3-1x1-bn[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "inception5b (Concatenate)       (None, 8, 8, 1024)   0           inception5b-br0-1x1-relu[0][0]   \n",
      "                                                                 inception5b-br1-3x3-relu[0][0]   \n",
      "                                                                 inception5b-br2-5x5-relu[0][0]   \n",
      "                                                                 inception5b-br3-1x1-relu[0][0]   \n",
      "__________________________________________________________________________________________________\n",
      "avg8x8 (AveragePooling2D)       (None, 1, 1, 1024)   0           inception5b[0][0]                \n",
      "__________________________________________________________________________________________________\n",
      "flatten (Flatten)               (None, 1024)         0           avg8x8[0][0]                     \n",
      "__________________________________________________________________________________________________\n",
      "predictions (Dense)             (None, 10)           10250       flatten[0][0]                    \n",
      "==================================================================================================\n",
      "Total params: 5,984,858\n",
      "Trainable params: 5,970,426\n",
      "Non-trainable params: 14,432\n",
      "__________________________________________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "from classifiers.GoogLeNet import InceptionV1ForCIFAR10\n",
    "from keras import losses\n",
    "\n",
    "weight_decay = 5e-4\n",
    "lr = 1e-1\n",
    "num_classes = 10\n",
    "inceptionV1 = InceptionV1ForCIFAR10(input_shape=(32, 32, 3), classes=num_classes, weight_decay=weight_decay)\n",
    "opt = keras.optimizers.SGD(lr=lr, momentum=0.9, nesterov=False)\n",
    "inceptionV1.compile(optimizer=opt,\n",
    "                    loss=losses.categorical_crossentropy,\n",
    "                    metrics=['accuracy'])\n",
    "inceptionV1.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train with data augmentation\n",
      "Epoch 1/120\n",
      "313/313 [==============================] - 122s 389ms/step - loss: 5.5466 - acc: 0.3065 - val_loss: 7.7617 - val_acc: 0.1782\n",
      "Epoch 2/120\n",
      "313/313 [==============================] - 92s 293ms/step - loss: 3.5517 - acc: 0.4635 - val_loss: 3.3966 - val_acc: 0.3298\n",
      "Epoch 3/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 2.3949 - acc: 0.5610 - val_loss: 2.7584 - val_acc: 0.3748\n",
      "Epoch 4/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 1.7846 - acc: 0.6243 - val_loss: 2.0664 - val_acc: 0.4778\n",
      "Epoch 5/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 1.4322 - acc: 0.6753 - val_loss: 2.3045 - val_acc: 0.4869\n",
      "Epoch 6/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 1.2000 - acc: 0.7177 - val_loss: 1.6989 - val_acc: 0.5649\n",
      "Epoch 7/120\n",
      "313/313 [==============================] - 96s 306ms/step - loss: 1.0670 - acc: 0.7493 - val_loss: 1.5183 - val_acc: 0.6325\n",
      "Epoch 8/120\n",
      "313/313 [==============================] - 92s 294ms/step - loss: 0.9902 - acc: 0.7663 - val_loss: 1.4171 - val_acc: 0.6265\n",
      "Epoch 9/120\n",
      "313/313 [==============================] - 92s 293ms/step - loss: 0.9340 - acc: 0.7817 - val_loss: 1.2057 - val_acc: 0.6958\n",
      "Epoch 10/120\n",
      "313/313 [==============================] - 92s 292ms/step - loss: 0.8968 - acc: 0.7978 - val_loss: 1.1877 - val_acc: 0.7084\n",
      "Epoch 11/120\n",
      "313/313 [==============================] - 93s 299ms/step - loss: 0.8814 - acc: 0.8030 - val_loss: 1.0322 - val_acc: 0.7554\n",
      "Epoch 12/120\n",
      "313/313 [==============================] - 94s 299ms/step - loss: 0.8510 - acc: 0.8117 - val_loss: 1.4553 - val_acc: 0.6291\n",
      "Epoch 13/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.8426 - acc: 0.8151 - val_loss: 1.2877 - val_acc: 0.7006\n",
      "Epoch 14/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.8285 - acc: 0.8224 - val_loss: 1.2465 - val_acc: 0.7113\n",
      "Epoch 15/120\n",
      "313/313 [==============================] - 94s 302ms/step - loss: 0.8109 - acc: 0.8286 - val_loss: 1.6246 - val_acc: 0.6136\n",
      "Epoch 16/120\n",
      "313/313 [==============================] - 97s 311ms/step - loss: 0.8032 - acc: 0.8333 - val_loss: 1.4523 - val_acc: 0.6361\n",
      "Epoch 17/120\n",
      "313/313 [==============================] - 97s 309ms/step - loss: 0.7952 - acc: 0.8357 - val_loss: 1.0306 - val_acc: 0.7628\n",
      "Epoch 18/120\n",
      "313/313 [==============================] - 94s 302ms/step - loss: 0.7868 - acc: 0.8374 - val_loss: 1.7890 - val_acc: 0.5471\n",
      "Epoch 19/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.7795 - acc: 0.8418 - val_loss: 1.7219 - val_acc: 0.6211\n",
      "Epoch 20/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.7774 - acc: 0.8439 - val_loss: 1.4403 - val_acc: 0.6543\n",
      "Epoch 21/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.7702 - acc: 0.8480 - val_loss: 0.8947 - val_acc: 0.8013\n",
      "Epoch 22/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.7591 - acc: 0.8498 - val_loss: 1.1456 - val_acc: 0.7306\n",
      "Epoch 23/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.7581 - acc: 0.8495 - val_loss: 1.0263 - val_acc: 0.7724\n",
      "Epoch 24/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.7477 - acc: 0.8539 - val_loss: 0.9583 - val_acc: 0.7799\n",
      "Epoch 25/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.7389 - acc: 0.8560 - val_loss: 1.5029 - val_acc: 0.6491\n",
      "Epoch 26/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.7298 - acc: 0.8571 - val_loss: 0.9972 - val_acc: 0.7888\n",
      "Epoch 27/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.7322 - acc: 0.8589 - val_loss: 1.0529 - val_acc: 0.7620\n",
      "Epoch 28/120\n",
      "313/313 [==============================] - 94s 299ms/step - loss: 0.7249 - acc: 0.8610 - val_loss: 1.0037 - val_acc: 0.7638\n",
      "Epoch 29/120\n",
      "313/313 [==============================] - 94s 299ms/step - loss: 0.7147 - acc: 0.8635 - val_loss: 1.1730 - val_acc: 0.7367\n",
      "Epoch 30/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.7096 - acc: 0.8651 - val_loss: 1.5292 - val_acc: 0.6601\n",
      "Epoch 31/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.5861 - acc: 0.9083 - val_loss: 0.5669 - val_acc: 0.9074\n",
      "Epoch 32/120\n",
      "313/313 [==============================] - 96s 308ms/step - loss: 0.4936 - acc: 0.9338 - val_loss: 0.5490 - val_acc: 0.9117\n",
      "Epoch 33/120\n",
      "313/313 [==============================] - 99s 316ms/step - loss: 0.4552 - acc: 0.9399 - val_loss: 0.5402 - val_acc: 0.9117\n",
      "Epoch 34/120\n",
      "313/313 [==============================] - 95s 305ms/step - loss: 0.4254 - acc: 0.9449 - val_loss: 0.4918 - val_acc: 0.9204\n",
      "Epoch 35/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.3976 - acc: 0.9493 - val_loss: 0.5699 - val_acc: 0.8956\n",
      "Epoch 36/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.3815 - acc: 0.9515 - val_loss: 0.5353 - val_acc: 0.9038\n",
      "Epoch 37/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.3601 - acc: 0.9538 - val_loss: 0.6198 - val_acc: 0.8836\n",
      "Epoch 38/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.3436 - acc: 0.9561 - val_loss: 0.4615 - val_acc: 0.9216\n",
      "Epoch 39/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.3280 - acc: 0.9591 - val_loss: 0.5878 - val_acc: 0.8857\n",
      "Epoch 40/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.3105 - acc: 0.9609 - val_loss: 0.5008 - val_acc: 0.9056\n",
      "Epoch 41/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.3013 - acc: 0.9608 - val_loss: 0.4749 - val_acc: 0.9104\n",
      "Epoch 42/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.2868 - acc: 0.9635 - val_loss: 0.4709 - val_acc: 0.9050\n",
      "Epoch 43/120\n",
      "313/313 [==============================] - 97s 310ms/step - loss: 0.2787 - acc: 0.9633 - val_loss: 0.5080 - val_acc: 0.8989\n",
      "Epoch 44/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.2707 - acc: 0.9647 - val_loss: 0.7672 - val_acc: 0.8439\n",
      "Epoch 45/120\n",
      "313/313 [==============================] - 95s 305ms/step - loss: 0.2680 - acc: 0.9646 - val_loss: 0.4599 - val_acc: 0.9076\n",
      "Epoch 46/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.2611 - acc: 0.9646 - val_loss: 0.7657 - val_acc: 0.8507\n",
      "Epoch 47/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.2584 - acc: 0.9646 - val_loss: 0.6034 - val_acc: 0.8744\n",
      "Epoch 48/120\n",
      "313/313 [==============================] - 97s 309ms/step - loss: 0.2513 - acc: 0.9651 - val_loss: 0.5041 - val_acc: 0.9023\n",
      "Epoch 49/120\n",
      "313/313 [==============================] - 98s 312ms/step - loss: 0.2453 - acc: 0.9665 - val_loss: 0.7403 - val_acc: 0.8458\n",
      "Epoch 50/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.2458 - acc: 0.9656 - val_loss: 0.4554 - val_acc: 0.9114\n",
      "Epoch 51/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.2445 - acc: 0.9652 - val_loss: 0.6032 - val_acc: 0.8794\n",
      "Epoch 52/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.2403 - acc: 0.9666 - val_loss: 0.5970 - val_acc: 0.8707\n",
      "Epoch 53/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.2361 - acc: 0.9677 - val_loss: 0.6702 - val_acc: 0.8544\n",
      "Epoch 54/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.2353 - acc: 0.9670 - val_loss: 0.8202 - val_acc: 0.8357\n",
      "Epoch 55/120\n",
      "313/313 [==============================] - 95s 302ms/step - loss: 0.2307 - acc: 0.9677 - val_loss: 0.7801 - val_acc: 0.8402\n",
      "Epoch 56/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.2327 - acc: 0.9665 - val_loss: 0.5934 - val_acc: 0.8744\n",
      "Epoch 57/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.2303 - acc: 0.9677 - val_loss: 0.4776 - val_acc: 0.9009\n",
      "Epoch 58/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.2303 - acc: 0.9676 - val_loss: 0.8199 - val_acc: 0.8286\n",
      "Epoch 59/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.2232 - acc: 0.9698 - val_loss: 0.7939 - val_acc: 0.8494\n",
      "Epoch 60/120\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "313/313 [==============================] - 93s 296ms/step - loss: 0.2246 - acc: 0.9691 - val_loss: 0.5268 - val_acc: 0.8911\n",
      "Epoch 61/120\n",
      "313/313 [==============================] - 92s 294ms/step - loss: 0.1985 - acc: 0.9788 - val_loss: 0.3755 - val_acc: 0.9284\n",
      "Epoch 62/120\n",
      "313/313 [==============================] - 93s 296ms/step - loss: 0.1751 - acc: 0.9880 - val_loss: 0.3908 - val_acc: 0.9260\n",
      "Epoch 63/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.1678 - acc: 0.9903 - val_loss: 0.3656 - val_acc: 0.9316\n",
      "Epoch 64/120\n",
      "313/313 [==============================] - 93s 297ms/step - loss: 0.1637 - acc: 0.9911 - val_loss: 0.3711 - val_acc: 0.9318\n",
      "Epoch 65/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1604 - acc: 0.9921 - val_loss: 0.3723 - val_acc: 0.9318\n",
      "Epoch 66/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1574 - acc: 0.9928 - val_loss: 0.3760 - val_acc: 0.9311\n",
      "Epoch 67/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.1556 - acc: 0.9932 - val_loss: 0.3629 - val_acc: 0.9354\n",
      "Epoch 68/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1521 - acc: 0.9941 - val_loss: 0.3622 - val_acc: 0.9354\n",
      "Epoch 69/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1504 - acc: 0.9944 - val_loss: 0.3599 - val_acc: 0.9354\n",
      "Epoch 70/120\n",
      "313/313 [==============================] - 95s 302ms/step - loss: 0.1487 - acc: 0.9942 - val_loss: 0.3719 - val_acc: 0.9343\n",
      "Epoch 71/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.1459 - acc: 0.9953 - val_loss: 0.3733 - val_acc: 0.9338\n",
      "Epoch 72/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.1454 - acc: 0.9954 - val_loss: 0.3719 - val_acc: 0.9345\n",
      "Epoch 73/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.1443 - acc: 0.9953 - val_loss: 0.3692 - val_acc: 0.9357\n",
      "Epoch 74/120\n",
      "313/313 [==============================] - 94s 302ms/step - loss: 0.1419 - acc: 0.9957 - val_loss: 0.3751 - val_acc: 0.9340\n",
      "Epoch 75/120\n",
      "313/313 [==============================] - 95s 302ms/step - loss: 0.1411 - acc: 0.9957 - val_loss: 0.3646 - val_acc: 0.9351\n",
      "Epoch 76/120\n",
      "313/313 [==============================] - 96s 305ms/step - loss: 0.1393 - acc: 0.9964 - val_loss: 0.3667 - val_acc: 0.9357\n",
      "Epoch 77/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.1381 - acc: 0.9962 - val_loss: 0.3712 - val_acc: 0.9345\n",
      "Epoch 78/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.1363 - acc: 0.9967 - val_loss: 0.3672 - val_acc: 0.9353\n",
      "Epoch 79/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.1358 - acc: 0.9963 - val_loss: 0.3697 - val_acc: 0.9351\n",
      "Epoch 80/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.1336 - acc: 0.9969 - val_loss: 0.3808 - val_acc: 0.9317\n",
      "Epoch 81/120\n",
      "313/313 [==============================] - 92s 294ms/step - loss: 0.1329 - acc: 0.9970 - val_loss: 0.3792 - val_acc: 0.9324\n",
      "Epoch 82/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.1319 - acc: 0.9969 - val_loss: 0.3724 - val_acc: 0.9354\n",
      "Epoch 83/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.1306 - acc: 0.9972 - val_loss: 0.3738 - val_acc: 0.9348\n",
      "Epoch 84/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.1295 - acc: 0.9973 - val_loss: 0.3795 - val_acc: 0.9335\n",
      "Epoch 85/120\n",
      "313/313 [==============================] - 96s 305ms/step - loss: 0.1290 - acc: 0.9976 - val_loss: 0.3611 - val_acc: 0.9357\n",
      "Epoch 86/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.1280 - acc: 0.9973 - val_loss: 0.3741 - val_acc: 0.9343\n",
      "Epoch 87/120\n",
      "313/313 [==============================] - 97s 311ms/step - loss: 0.1266 - acc: 0.9974 - val_loss: 0.3693 - val_acc: 0.9376\n",
      "Epoch 88/120\n",
      "313/313 [==============================] - 97s 309ms/step - loss: 0.1269 - acc: 0.9970 - val_loss: 0.3794 - val_acc: 0.9350\n",
      "Epoch 89/120\n",
      "313/313 [==============================] - 97s 310ms/step - loss: 0.1257 - acc: 0.9974 - val_loss: 0.3730 - val_acc: 0.9359\n",
      "Epoch 90/120\n",
      "313/313 [==============================] - 98s 312ms/step - loss: 0.1244 - acc: 0.9974 - val_loss: 0.3777 - val_acc: 0.9352\n",
      "Epoch 91/120\n",
      "313/313 [==============================] - 97s 309ms/step - loss: 0.1229 - acc: 0.9978 - val_loss: 0.3723 - val_acc: 0.9359\n",
      "Epoch 92/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.1221 - acc: 0.9983 - val_loss: 0.3705 - val_acc: 0.9364\n",
      "Epoch 93/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.1224 - acc: 0.9977 - val_loss: 0.3678 - val_acc: 0.9370\n",
      "Epoch 94/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.1229 - acc: 0.9977 - val_loss: 0.3676 - val_acc: 0.9373\n",
      "Epoch 95/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.1230 - acc: 0.9977 - val_loss: 0.3694 - val_acc: 0.9367\n",
      "Epoch 96/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.1224 - acc: 0.9977 - val_loss: 0.3699 - val_acc: 0.9366\n",
      "Epoch 97/120\n",
      "313/313 [==============================] - 94s 302ms/step - loss: 0.1221 - acc: 0.9981 - val_loss: 0.3674 - val_acc: 0.9369\n",
      "Epoch 98/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.1220 - acc: 0.9980 - val_loss: 0.3686 - val_acc: 0.9367\n",
      "Epoch 99/120\n",
      "313/313 [==============================] - 97s 309ms/step - loss: 0.1219 - acc: 0.9981 - val_loss: 0.3683 - val_acc: 0.9372\n",
      "Epoch 100/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1221 - acc: 0.9980 - val_loss: 0.3672 - val_acc: 0.9373\n",
      "Epoch 101/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.1218 - acc: 0.9980 - val_loss: 0.3700 - val_acc: 0.9376\n",
      "Epoch 102/120\n",
      "313/313 [==============================] - 97s 311ms/step - loss: 0.1212 - acc: 0.9979 - val_loss: 0.3679 - val_acc: 0.9363\n",
      "Epoch 103/120\n",
      "313/313 [==============================] - 98s 313ms/step - loss: 0.1216 - acc: 0.9980 - val_loss: 0.3696 - val_acc: 0.9363\n",
      "Epoch 104/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.1210 - acc: 0.9980 - val_loss: 0.3697 - val_acc: 0.9364\n",
      "Epoch 105/120\n",
      "313/313 [==============================] - 95s 304ms/step - loss: 0.1206 - acc: 0.9982 - val_loss: 0.3686 - val_acc: 0.9367\n",
      "Epoch 106/120\n",
      "313/313 [==============================] - 94s 299ms/step - loss: 0.1209 - acc: 0.9982 - val_loss: 0.3689 - val_acc: 0.9371\n",
      "Epoch 107/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.1202 - acc: 0.9983 - val_loss: 0.3698 - val_acc: 0.9368\n",
      "Epoch 108/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.1210 - acc: 0.9982 - val_loss: 0.3680 - val_acc: 0.9371\n",
      "Epoch 109/120\n",
      "313/313 [==============================] - 94s 299ms/step - loss: 0.1206 - acc: 0.9982 - val_loss: 0.3681 - val_acc: 0.9371\n",
      "Epoch 110/120\n",
      "313/313 [==============================] - 94s 302ms/step - loss: 0.1212 - acc: 0.9980 - val_loss: 0.3693 - val_acc: 0.9370\n",
      "Epoch 111/120\n",
      "313/313 [==============================] - 94s 301ms/step - loss: 0.1208 - acc: 0.9979 - val_loss: 0.3685 - val_acc: 0.9367\n",
      "Epoch 112/120\n",
      "313/313 [==============================] - 93s 298ms/step - loss: 0.1208 - acc: 0.9978 - val_loss: 0.3662 - val_acc: 0.9365\n",
      "Epoch 113/120\n",
      "313/313 [==============================] - 97s 311ms/step - loss: 0.1202 - acc: 0.9984 - val_loss: 0.3676 - val_acc: 0.9373\n",
      "Epoch 114/120\n",
      "313/313 [==============================] - 96s 307ms/step - loss: 0.1204 - acc: 0.9979 - val_loss: 0.3678 - val_acc: 0.9374\n",
      "Epoch 115/120\n",
      "313/313 [==============================] - 98s 312ms/step - loss: 0.1199 - acc: 0.9985 - val_loss: 0.3662 - val_acc: 0.9380\n",
      "Epoch 116/120\n",
      "313/313 [==============================] - 97s 308ms/step - loss: 0.1197 - acc: 0.9981 - val_loss: 0.3657 - val_acc: 0.9376\n",
      "Epoch 117/120\n",
      "313/313 [==============================] - 95s 303ms/step - loss: 0.1194 - acc: 0.9986 - val_loss: 0.3655 - val_acc: 0.9380\n",
      "Epoch 118/120\n",
      "313/313 [==============================] - 95s 302ms/step - loss: 0.1198 - acc: 0.9980 - val_loss: 0.3666 - val_acc: 0.9374\n",
      "Epoch 119/120\n",
      "313/313 [==============================] - 94s 300ms/step - loss: 0.1190 - acc: 0.9983 - val_loss: 0.3678 - val_acc: 0.9367\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 120/120\n",
      "313/313 [==============================] - 92s 295ms/step - loss: 0.1183 - acc: 0.9988 - val_loss: 0.3689 - val_acc: 0.9370\n",
      "CPU times: user 2h 55min 12s, sys: 20min 6s, total: 3h 15min 18s\n",
      "Wall time: 3h 9min 31s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "from keras.preprocessing.image import ImageDataGenerator\n",
    "from keras.callbacks import ReduceLROnPlateau\n",
    "from keras.callbacks import LearningRateScheduler\n",
    "# fit data with data augmentation or not\n",
    "data_augmentation = True\n",
    "\n",
    "\n",
    "def lr_scheduler(epoch):\n",
    "    return lr * (0.1 ** (epoch // 30))\n",
    "\n",
    "reduce_lr = LearningRateScheduler(lr_scheduler)\n",
    "# reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.1,\n",
    "#                               patience=10, min_lr=1e-6, verbose=1)\n",
    "\n",
    "batch_size = 128\n",
    "epochs = 120\n",
    "\n",
    "if data_augmentation:\n",
    "    # datagen\n",
    "    datagen = ImageDataGenerator(\n",
    "        featurewise_center=False,  # set input mean to 0 over the dataset\n",
    "        samplewise_center=False,  # set each sample mean to 0\n",
    "        featurewise_std_normalization=False,  # divide inputs by std of the dataset\n",
    "        samplewise_std_normalization=False,  # divide each input by its std\n",
    "        zca_whitening=False,  # apply ZCA whitening\n",
    "        rotation_range=15,  # randomly rotate images in the range (degrees, 0 to 180)\n",
    "        width_shift_range=0.1,  # randomly shift images horizontally (fraction of total width)\n",
    "        height_shift_range=0.1,  # randomly shift images vertically (fraction of total height)\n",
    "        horizontal_flip=True,  # randomly flip images\n",
    "        vertical_flip=False, # randomly flip images\n",
    "    ) \n",
    "    # (std, mean, and principal components if ZCA whitening is applied).\n",
    "    # datagen.fit(x_train)\n",
    "    print('train with data augmentation')\n",
    "    history = inceptionV1.fit_generator(generator=datagen.flow(x_train, y_train, batch_size=batch_size),\n",
    "                                        epochs=epochs,\n",
    "                                        callbacks=[reduce_lr],\n",
    "                                        validation_data=(x_val, y_val)\n",
    "                                        )\n",
    "else:\n",
    "    print('train without data augmentation')\n",
    "    history = inceptionV1.fit(x_train, y_train, \n",
    "                      batch_size=batch_size, epochs=epochs, \n",
    "                      callbacks=[reduce_lr],\n",
    "                      validation_data=(x_val, y_val)\n",
    "                      )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot loss and acc \n",
    "plt.plot(history.history['loss'])\n",
    "plt.plot(history.history['val_loss'])\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('Loss value')\n",
    "plt.legend(['train', 'test'], loc='upper left')\n",
    "plt.show()\n",
    "\n",
    "plt.plot(history.history['acc'])\n",
    "plt.plot(history.history['val_acc'])\n",
    "plt.xlabel('epoch')\n",
    "plt.ylabel('acc value')\n",
    "plt.legend(['train', 'test'], loc='upper left')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 13s 1ms/step\n",
      "evaluate loss:0.397236 acc:0.930800\n"
     ]
    }
   ],
   "source": [
    "loss, acc = inceptionV1.evaluate(x_test, y_test)\n",
    "print('evaluate loss:%f acc:%f' % (loss, acc))"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
